/**
 * @FileName Proxy.java
 * @Package com.designMode.proxy
 * -------------------------------------
 * @function Please write description of function
 * @Date 2015-12-29 下午5:02:54
 * -------------------------------------
 * Copyright (c) 2015,顾博君 All Rights Reserved.
 */
package com.designMode.proxy.staticProxy;

/**
 * @author 顾博君
 * @ClassName Proxy
 * @Date 2015-12-29 下午5:02:54
 * @Function 代理类
 */
public class Proxy implements Subject {
    // 要代理哪个实现类
    private Subject subject = null;

    /**
     * 通过构造函数传递被代理者
     *
     * @param subject 被代理者
     */
    public Proxy(Subject subject) {
        this.subject = subject;
    }

    /**
     * 实现接口中定义的方法
     */
    @Override
    public void request() {
        this.before();// 预处理
        this.subject.request();
        this.after();// 善后处理
    }

    /**
     * 预处理
     */
    private void before() {
        System.out.println("预处理");
    }

    /**
     * 善后处理
     */
    private void after() {
        System.out.println("善后处理");
    }
}
